package com.megaspacevr.entity.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

/**
 * 预约导出VO - 包含完整的预约和个人信息数据
 * 用于管理员导出功能
 */
@Getter
@Setter
@ToString
@Schema(description = "预约导出VO")
public class BookingExportVO {
    
    // 预约基本信息
    @Schema(description = "预约ID")
    private Long id;
    
    @Schema(description = "预约编号")
    private String bookingNumber;
    
    @Schema(description = "用户设备标识")
    private String userToken;
    
    @Schema(description = "预约状态")
    private String status;
    
    @Schema(description = "预约日期")
    private LocalDate bookingDate;
    
    @Schema(description = "预约开始时间")
    private LocalTime bookingTimeStart;
    
    @Schema(description = "预约结束时间")
    private LocalTime bookingTimeEnd;
    
    @Schema(description = "时间段（上午/下午/晚上）")
    private String periodName;
    
    @Schema(description = "备注")
    private String notes;
    
    @Schema(description = "特殊需求")
    private String specialRequirements;
    
    @Schema(description = "完成时间")
    private LocalDateTime completedAt;
    
    @Schema(description = "创建时间")
    private LocalDateTime createdAt;
    
    @Schema(description = "更新时间")
    private LocalDateTime updatedAt;
    
    // 个人信息（完整字段）
    @Schema(description = "个人信息ID")
    private Long personalInfoId;
    
    @Schema(description = "姓名")
    private String contactName;
    
    @Schema(description = "联系电话")
    private String contactPhone;
    
    @Schema(description = "性别")
    private String gender;
    
    @Schema(description = "年龄")
    private Integer age;
    
    @Schema(description = "教育程度")
    private String education;
    
    @Schema(description = "职业")
    private String occupation;
    
    @Schema(description = "宗教信仰")
    private String religion;
    
    @Schema(description = "掌握语种")
    private String languages;
    
    // 时间段详情
    @Schema(description = "时间段ID")
    private Long timeSlotId;
} 